package com.example.comcumer.config;



import org.springframework.amqp.core.Binding;
import org.springframework.amqp.core.BindingBuilder;
import org.springframework.amqp.core.FanoutExchange;
import org.springframework.amqp.core.Queue;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class FanoutConfiguration {

    // 定义一个Fanout类型的Exchange交换机
    @Bean
    public FanoutExchange fanoutExchange() {  // 定义一个Fanout类型的Exchange
        return new FanoutExchange("fanoutExchange-wjj");  //方法1直接i返回常见交换机
//      ExchangeBuilder.fanoutExchange("fanoutExchange-wjj").build();  //方法2使用ExchangeBuilder构建
    }

    //定义一个队列
    @Bean
    public Queue fanoutQueue() {
        return new Queue("fanoutQueue-wjj");  //方法1直接返回常见队列
        // QueueBuilder.durable("fanoutQueue-wjj").build();  //方法2使用QueueBuilder构建,durable表示持久化,即将消息存储到存储器中而不是内存
    }
    //定义交换机和消息队列的绑定关系可通似乎指定路由routerkey：，
    //可以用参数接收bean组件，参数名就是扇面两个bean的方法名
    //也可以直接调用bean组件的方法名，实际上就是注入的bean组件对象
    @Bean
    public Binding binding(Queue fanoutQueue, FanoutExchange fanoutExchange) {
        return BindingBuilder.bind(fanoutQueue()).to(fanoutExchange());
    }
}
